package com.innovations.inn.service;

import com.innovations.inn.domain.ValueSet;
import com.innovations.inn.domain.request.RequestValueSetInfo;
import java.util.List;

/**
 * 字典明细Service接口
 *
 * @author dp
 * @date 2024-11-01
 */
public interface IValueSetService {
    /**
     * 查询字典明细
     *
     * @param valueId 字典明细主键
     * @return 字典明细
     */
    ValueSet selectValueSetByValueId(Long valueId);

    /**
     * 查询字典明细列表
     *
     * @param valueSet 字典明细
     * @return 字典明细集合
     */
    List<ValueSet> selectValueSetList(ValueSet valueSet);

    /**
     * 新增字典明细
     *
     * @param valueSet 字典明细
     * @return 结果
     */
    int insertValueSet(ValueSet valueSet);

    /**
     * 修改字典明细
     *
     * @param valueSet 字典明细
     * @return 结果
     */
    int updateValueSet(ValueSet valueSet);

    /**
     * 批量删除字典明细
     *
     * @param valueIds 需要删除的字典明细主键集合
     * @return 结果
     */
    int deleteValueSetByValueIds(Long[] valueIds);

    /**
     * 删除字典明细信息
     *
     * @param valueId 字典明细主键
     * @return 结果
     */
    int deleteValueSetByValueId(Long valueId);

    /**
     * 根据字典明细扩展查询字典数据
     *
     * @param requestValueSetInfo 字典明细扩展
     * @return 字典明细扩展
     */
    List<RequestValueSetInfo> selectValueSetInfo(RequestValueSetInfo requestValueSetInfo);

    /**
     * 根据字典类型查询字典数据
     *
     * @param codeSystemNo 字典编号
     * @param valueDesc    字典明细描述
     * @return 字典数据
     */
    Long selectValueBySystemNoAndDesc(String codeSystemNo, String valueDesc);

    /**
     * 实体数据补全
     *
     * @param valueSet  实体
     * @param userId    用户id
     * @param crateType 创建类型 1：新增 2：修改
     */
    void completeData(ValueSet valueSet, Long userId, Integer crateType);

}
